#ifndef PDOMAPSTRUCT_H
#define PDOMAPSTRUCT_H
#include <ecrt.h>
#pragma pack(push) //保存对齐状态
#pragma pack(1)//设定为1字节对齐


/**
 * =========== 泰科品牌 （robotio模块）=============================
 */
ec_pdo_entry_info_t taike_rio_pdo_entries[] = {
    {0x7000, 0x01, 1}, /* LED1 */
    {0x7000, 0x02, 1}, /* LED2 */
    {0x7000, 0x03, 1}, /* LED3 */
    {0x7000, 0x04, 1}, /* LED4 */
    {0x7000, 0x05, 1}, /* LED5 */
    {0x7000, 0x06, 1}, /* LED6 */
    {0x7000, 0x07, 1}, /* LED7 */
    {0x7000, 0x08, 1}, /* LED8 */
    {0x6000, 0x01, 1}, /* Button1 */
    {0x6000, 0x02, 1}, /* Button2 */
    {0x6000, 0x03, 1}, /* Button3 */
    {0x6000, 0x04, 1}, /* Button4 */
    {0x6000, 0x05, 1}, /* Button5 */
    {0x6000, 0x06, 1}, /* Button6 */
    {0x6000, 0x07, 1}, /* Button7 */
    {0x6000, 0x08, 1}, /* Button8 */
    {0x8000, 0x01, 16}, /* AI1 */
    {0x8000, 0x02, 16}, /* AI2 */
    {0x8000, 0x03, 16}, /* AI3 */
    {0x8000, 0x04, 16}, /* AI4 */
    {0x8000, 0x05, 16}, /* AI5 */
    {0x8000, 0x06, 16}, /* AI6 */
    {0x8000, 0x07, 16}, /* AI7 */
    {0x8000, 0x08, 16}, /* AI8 */
};

ec_pdo_info_t taike_rio_pdos[] = {
    {0x1600, 8, taike_rio_pdo_entries + 0}, /* LED process data mapping */
    {0x1a00, 8, taike_rio_pdo_entries + 8}, /* Button process data mapping */
    {0x1a01, 8, taike_rio_pdo_entries + 16}, /* AI process data mapping */
};

ec_sync_info_t taike_rio_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, taike_rio_pdos + 0, EC_WD_ENABLE},
//    {3, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
     {3, EC_DIR_INPUT, 2, taike_rio_pdos + 1, EC_WD_DISABLE},
    {0xff}
};



/**
 * =========== beckhoof品牌 （ai接收模块）=============================
 */

ec_pdo_entry_info_t beckhoof_ai_pdo_entries[] = {
    {0x6000, 0x11, 16}, /* ai1 */
    {0x6010, 0x11, 16}, /* ai2 */
    {0x6020, 0x11, 16}, /* ai3 */
    {0x6030, 0x11, 16}, /* ai4 */

};

ec_pdo_info_t beckhoof_ai_pdos[] = {
    {0x1a01, 1,  beckhoof_ai_pdo_entries + 0}, /* ai1 */
    {0x1a03, 1,  beckhoof_ai_pdo_entries + 1}, /* ai2 */
    {0x1a05, 1, beckhoof_ai_pdo_entries + 2}, /* ai3 */
    {0x1a07, 1, beckhoof_ai_pdo_entries + 3}, /* ai4 */
};

ec_sync_info_t beckhoof_ai_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {3, EC_DIR_INPUT, 4, beckhoof_ai_pdos + 0, EC_WD_DISABLE},
    {0xff}
};


/**
 * =========== 雷赛品牌 （#x1500033产品码编码器接收模块）=============================
 */

ec_pdo_entry_info_t leisai_encoder_pdo_entries[] = {
    {0x6600, 0x01, 16}, /* OUT */
    {0x6100, 0x01, 32}, /* Encoder0 */
    {0x6100, 0x02, 32}, /* Encoder1 */
    {0x6100, 0x03, 32}, /* Encoder2 */
    {0x6300, 0x01, 8}, /* HighSpeed_IN0 */
    {0x6300, 0x02, 8}, /* Ltc0_Finished */
    {0x6300, 0x03, 32}, /* ltc_Encoder0Val */
    {0x6300, 0x04, 32}, /* ltc_Encoder1Val */
    {0x6300, 0x05, 32}, /* ltc_Encoder2Val */
    {0x6301, 0x01, 8}, /* HighSpeed_IN1 */
    {0x6301, 0x02, 8}, /* Ltc1_Finished */
    {0x6301, 0x03, 32}, /* ltc_Encoder0Val */
    {0x6301, 0x04, 32}, /* ltc_Encoder1Val */
    {0x6301, 0x05, 32}, /* ltc_Encoder2Val */
    {0x6302, 0x01, 8}, /* HighSpeed_IN2 */
    {0x6302, 0x02, 8}, /* Ltc2_Finished */
    {0x6302, 0x03, 32}, /* ltc_Encoder0Val */
    {0x6302, 0x04, 32}, /* ltc_Encoder1Val */
    {0x6302, 0x05, 32}, /* ltc_Encoder2Val */
    {0x6303, 0x01, 8}, /* HighSpeed_IN3 */
    {0x6303, 0x02, 8}, /* Ltc3_Finished */
    {0x6303, 0x03, 32}, /* ltc_Encoder0Val */
    {0x6303, 0x04, 32}, /* ltc_Encoder1Val */
    {0x6303, 0x05, 32}, /* ltc_Encoder2Val */
    {0x6500, 0x01, 8}, /* HighSpeedOut0_Read */
    {0x6500, 0x02, 16}, /* Cmp0_FIFO_Exist */
    {0x6500, 0x03, 16}, /* Cmp0_Finished_Number */
    {0x6500, 0x04, 32}, /* Cmp0_Current_CmpData */
    {0x6501, 0x01, 8}, /* HighSpeedOut1_Read */
    {0x6501, 0x02, 16}, /* Cmp1_FIFO_Exist */
    {0x6501, 0x03, 16}, /* Cmp1_Finished_Number */
    {0x6501, 0x04, 32}, /* Cmp1_Current_CmpData */
    {0x6502, 0x01, 8}, /* HighSpeedOut2_Read */
    {0x6502, 0x02, 16}, /* Cmp2_FIFO_Exist */
    {0x6502, 0x03, 16}, /* Cmp2_Finished_Number */
    {0x6502, 0x04, 32}, /* Cmp2_Current_CmpData */
};

ec_pdo_info_t leisai_encoder_pdos[] = {
    {0x1600, 1, leisai_encoder_pdo_entries + 0}, /* RxPDO0-Map */
    {0x1a00, 3, leisai_encoder_pdo_entries + 1}, /* TxPDO0-Map */
    {0x1a01, 10, leisai_encoder_pdo_entries + 4}, /* TxPDO1-Map */
    {0x1a02, 10, leisai_encoder_pdo_entries + 14}, /* TxPDO2-Map */
    {0x1a03, 12, leisai_encoder_pdo_entries + 24}, /* TxPDO3-Map */
};

ec_sync_info_t leisai_encoder_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, leisai_encoder_pdos + 0, EC_WD_ENABLE},
    {3, EC_DIR_INPUT, 4, leisai_encoder_pdos + 1, EC_WD_DISABLE},
    {0xff}
};

/**
 * =========== xinyang品牌 （16didoＩＯ模块）=============================
 */
/* Master 0, Slave 4
 * Vendor ID:       0x00000025
 * Product code:    0x00000520
 * Revision number: 0x00000001
 */

//ec_pdo_entry_info_t xinyangIOR1_pdo_entries[] = {
//    {0x7011, 0x00, 16}, /* DO_OUTPUTS */
//    {0x6001, 0x00, 16}, /* DI 000 */
//};

//ec_pdo_info_t xinyangIOR1_pdos[] = {
//    {0x1601, 1, xinyangIOR1_pdo_entries + 0}, /* DO RxPDO-Map */
//    {0x1a00, 1, xinyangIOR1_pdo_entries + 1}, /* DI TxPDO-Map */
//};

//ec_sync_info_t xinyangIOR1_syncs[] = {
//    {0, EC_DIR_OUTPUT, 1, xinyangIOR1_pdos + 0, EC_WD_ENABLE},
//    {1, EC_DIR_INPUT, 1, xinyangIOR1_pdos + 1, EC_WD_DISABLE},
//    {0xff}
//};

ec_pdo_entry_info_t xinyangIOR1_pdo_entries[] = {
    {0x7011, 0x00, 16}, /* DO_OUTPUTS */
    {0x7012, 0x00, 16}, /* DA1_OUTPUTS */
    {0x7013, 0x00, 16}, /* DA2_OUTPUTS */
    {0x6001, 0x00, 16}, /* SubIndex 000 */
    {0x6004, 0x00, 16}, /* SubIndex 000 */
    {0x6005, 0x00, 16}, /* SubIndex 000 */
    {0x6002, 0x00, 16}, /* SubIndex 000 */
    {0x6003, 0x00, 16}, /* SubIndex 000 */
};

ec_pdo_info_t xinyangIOR1_pdos[] = {
    {0x1601, 3, xinyangIOR1_pdo_entries + 0}, /* DO RxPDO-Map */
    {0x1a00, 3, xinyangIOR1_pdo_entries + 3}, /* DI TxPDO-Map */
    {0x1a02, 2, xinyangIOR1_pdo_entries + 6}, /* AI TxPDO-Map */
};

ec_sync_info_t xinyangIOR1_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, xinyangIOR1_pdos + 0, EC_WD_ENABLE},
    {3, EC_DIR_INPUT, 2, xinyangIOR1_pdos + 1, EC_WD_DISABLE},
    {0xff}
};



/**
 * =========== 雷赛品牌 （３０４产品码ＩＯ模块）=============================
 */

ec_pdo_entry_info_t leisai_io_entries[] = {
    //write
    {0x0f00, 0x01, 16}, //output

    // read
    {0x1002, 0x01, 16},//input

};

ec_pdo_info_t leisai_io_pdos[] = {
    {0x1600, 1, leisai_io_entries + 0},
    {0x1a00, 1, leisai_io_entries + 1}
};
ec_sync_info_t leisai_io_syncs[] = {
    {0, EC_DIR_OUTPUT, 1, leisai_io_pdos + 0, EC_WD_DEFAULT},
    {1, EC_DIR_INPUT, 1, leisai_io_pdos + 1, EC_WD_DEFAULT},
    {0xff}//可能要用０和１
};

//ec_sync_info_t leisai_io_syncs[] = {
//    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DEFAULT},
//    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DEFAULT},
//    {2, EC_DIR_OUTPUT, 1, leisai_io_pdos + 0, EC_WD_DEFAULT},
//    {3, EC_DIR_INPUT, 1, leisai_io_pdos + 1, EC_WD_DEFAULT},
//    {0xff}//可能要用０和１
//};
//---------------------------------
ec_pdo_entry_info_t leisaiio_doe4_pdo_entries[] = {
    {0x7000, 0x01, 16}, /* OUT 1 */
    {0x7000, 0x02, 16}, /* OUT 2 */
//    {0x6000, 0x01, 1}, /* Switch 1 */
//    {0x6000, 0x02, 1}, /* Switch 2 */
//    {0x6000, 0x03, 1}, /* Switch 3 */
//    {0x6000, 0x04, 1}, /* Switch 4 */
//    {0x6000, 0x05, 1}, /* Switch 5 */
//    {0x6000, 0x06, 1}, /* Switch 6 */
//    {0x6000, 0x07, 1}, /* Switch 7 */
//    {0x6000, 0x08, 1}, /* Switch 8 */
//    {0x6030, 0x01, 32}, /* Info 1 */
//    {0x6030, 0x02, 16}, /* Info 2 */
};

ec_pdo_info_t leisaiio_doe4_pdos[] = {
    {0x1602, 2, leisaiio_doe4_pdo_entries + 0}, /* RxPDO1-Map */
//    {0x1a00, 8, leisaiio_doe4_pdo_entries + 2}, /* DI Inputs */
//    {0x1a03, 2, leisaiio_doe4_pdo_entries + 10}, /* Motor AI Inputs */
};

ec_sync_info_t leisaiio_doe4_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, leisaiio_doe4_pdos + 0, EC_WD_ENABLE},
    {3, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {0xff}
};

//----------------------
ec_pdo_entry_info_t leisaiio_die4_pdo_entries[] = {
//    {0x7010, 0x01, 1}, /* LED 1 */
//    {0x7010, 0x02, 1}, /* LED 2 */
//    {0x7010, 0x03, 1}, /* LED 3 */
//    {0x7010, 0x04, 1}, /* LED 4 */
//    {0x7010, 0x05, 1}, /* LED 5 */
//    {0x7010, 0x06, 1}, /* LED 6 */
//    {0x7010, 0x07, 1}, /* LED 7 */
//    {0x7010, 0x08, 1}, /* LED 8 */
//    {0x7020, 0x01, 8}, /* Count */
//    {0x7020, 0x02, 8}, /* Cmd */
//    {0x7020, 0x03, 16}, /* Motor Data */
    {0x6000, 0x01, 16}, /* IN 1 */
    {0x6000, 0x02, 16}, /* IN 2 */
};

ec_pdo_info_t leisaiio_die4_pdos[] = {
//    {0x1601, 8, leisaiio_die4_pdo_entries + 0}, /* DO Outputs */
//    {0x1602, 3, leisaiio_die4_pdo_entries + 8}, /* Motor Outputs */
    {0x1a00, 2, leisaiio_die4_pdo_entries + 0}, /* TxPDO1-Map */
};

ec_sync_info_t leisaiio_die4_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 0, NULL, EC_WD_ENABLE},
    {3, EC_DIR_INPUT, 1, leisaiio_die4_pdos + 0, EC_WD_DISABLE},
    {0xff}
};

/**
 * =========== default品牌 （无特殊的共用此pdo定义)=============================
 * 不同品牌的司服驱动的主要差别在pdo的映射配置和error的定义，然后是自定义对象字典。
 * IO设备pdo直接由ethercat 主站从网线读取从站eeprom
 * //泰克新驱动支持，旧驱动有的轴上不了使能. 伊莱斯支持，禾川支持。
 */

ec_pdo_entry_info_t motor_entries[] = {
    //write
    {0x6040, 0x00, 16}, //控制字( 这个必须写在开头 )
    {0x607A, 0x00, 32}, //目标位置
    {0x6060, 0x00, 8}, //控制模式

    //    {0x0000, 0x00, 8}, // 假字节 (三洋写了假字节后报错)

    //    {0x60FF, 0x00, 32}, //目标速度
    //    {0x6071, 0x00, 16}, //目标力距
    //    {0x6098, 0x00, 8}, //回零模式
    //    {0x6099, 0x01, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
    //    {0x6099, 0x02, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
    {0x60B1, 0x00, 32},// 速度漂移
    {0x60B2, 0x00, 16},//扭矩漂移
    //    {0x609A, 0x00, 32}, //LS err: not PDO

    // read
    {0x6041, 0x00, 16},//状态字
    {0x6064, 0x00, 32},//实际位置(编码器值)
    {0x606C, 0x00, 32}, //实际速度
    {0x6077, 0x00, 16}, //实际扭矩
    //   {0x60FD, 0x00, 32},//数字输入
    {0x60F4, 0x00, 32}, // 实际跟随误差
    {0x603F, 0x00, 16},//错误码
};

ec_pdo_info_t motor_pdos[] = {
    {0x1600, 5, motor_entries + 0},
    {0x1a00, 6, motor_entries + 5}
};

ec_sync_info_t motor_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DEFAULT},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DEFAULT},
    {2, EC_DIR_OUTPUT, 1, motor_pdos + 0, EC_WD_DEFAULT},
    {3, EC_DIR_INPUT, 1, motor_pdos + 1, EC_WD_DEFAULT},
    {0xff}
};


// {0x6065, 0x00, 32} // 设定电机跟随误差( LS no such pdo )

/// 不同品牌的 PDO 映射的通道 index 不一样, 一个通道对象字典可以超过12个
//LS 不能用0x1700,　0x1b00
/**
 * =========== 高创=============================
 */
ec_pdo_entry_info_t servotronix_entries[] = {
    {0x607a, 0x00, 32},//目标位置
    {0x6040, 0x00, 16},
    {0x6060, 0x00, 8},
    {0x60fd, 0x00, 32},//Di status
    {0x20b6, 0x00, 32},//external feedback
    {0x60f4, 0x00, 32},// 实际跟随误差
    {0x6041, 0x00, 16},//状态字
    {0x6061, 0x00, 8},//mode display
    {0x6064, 0x00, 32},//实际位置(编码器值)
    {0x603F, 0x00, 16},//错误码
};

ec_pdo_info_t servotronix_pdos[] = {
    {0x1600, 3, servotronix_entries + 0},
    {0x1a00, 7, servotronix_entries + 3},
};

ec_sync_info_t servotronix_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, servotronix_pdos + 0, EC_WD_DISABLE},
    {3, EC_DIR_INPUT, 1, servotronix_pdos + 1, EC_WD_DISABLE},
    {0xff}
};



/**
 * =========== 雷赛 品牌 csp cst=============================
 */

//ec_pdo_entry_info_t motor_leisai_pdo_entries[] = {
//    {0x6040, 0x00, 16},//控制字
//    {0x607a, 0x00, 32},//目标位置
//    {0x60b8, 0x00, 16},
//    {0x603f, 0x00, 16},
//    {0x6041, 0x00, 16},
//    {0x6061, 0x00, 8},
//    {0x6064, 0x00, 32},
//    {0x60b9, 0x00, 16},
//    {0x60ba, 0x00, 32},
//    {0x60fd, 0x00, 32},
//};

//ec_pdo_info_t motor_leisai_pdos[] = {
//    {0x1600, 3, motor_leisai_pdo_entries + 0},
//    {0x1a00, 7, motor_leisai_pdo_entries + 3},
//};

//ec_sync_info_t motor_leisai_syncs[] = {
//    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
//    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
//    {2, EC_DIR_OUTPUT, 1, motor_leisai_pdos + 0, EC_WD_ENABLE},
//    {3, EC_DIR_INPUT, 1, motor_leisai_pdos + 1, EC_WD_DISABLE},
//    {0xff}
//};

ec_pdo_entry_info_t motor_leisai_entries[] = {
    //write
    {0x6040, 0x00, 16}, //控制字( 这个必须写在开头 )
    {0x607A, 0x00, 32}, //目标位置
    {0x6060, 0x00, 8}, //控制模式

    //    {0x0000, 0x00, 8}, // 假字节 (三洋写了假字节后报错)

    //    {0x60FF, 0x00, 32}, //目标速度
    //    {0x6071, 0x00, 16}, //目标力距
    //    {0x6098, 0x00, 8}, //回零模式
    //    {0x6099, 0x01, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
    //    {0x6099, 0x02, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
//    {0x60B1, 0x00, 32},// 速度漂移,不支持
//    {0x60B2, 0x00, 16},//扭矩漂移,不支持
    //    {0x609A, 0x00, 32}, //LS err: not PDO

    // read
    {0x6041, 0x00, 16},//状态字
    {0x6064, 0x00, 32},//实际位置(编码器值)
    {0x606C, 0x00, 32}, //实际速度
//    {0x6077, 0x00, 16}, //实际扭矩,不支持
    //   {0x60FD, 0x00, 32},//数字输入
//    {0x60F4, 0x00, 32}, // 实际跟随误差,不支持
    {0x603F, 0x00, 16},//错误码
};

ec_pdo_info_t motor_leisai_pdos[] = {
    {0x1600, 3, motor_leisai_entries + 0},
    {0x1a00, 4, motor_leisai_entries + 3}
};

ec_sync_info_t motor_leisai_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DEFAULT},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DEFAULT},
    {2, EC_DIR_OUTPUT, 1, motor_leisai_pdos + 0, EC_WD_DEFAULT},
    {3, EC_DIR_INPUT, 1, motor_leisai_pdos + 1, EC_WD_DEFAULT},
    {0xff}
};

/**
 * =========== 泰科 品牌 csp cst=============================
 */

ec_pdo_entry_info_t taikeMotorPT_entries[] = {
    //write
    {0x6040, 0x00, 16}, //控制字( 这个必须写在开头 )
    {0x607A, 0x00, 32}, //目标位置
    {0x6060, 0x00, 8}, //控制模式

    //    {0x0000, 0x00, 8}, // 假字节 (三洋写了假字节后报错)
    {0x60B1, 0x00, 32},// 速度漂移
    {0x6071, 0x00, 16}, //目标力距
//    {0x60FF, 0x00, 32}, //目标速度

    //    {0x6098, 0x00, 8}, //回零模式
    //    {0x6099, 0x01, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
    //    {0x6099, 0x02, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
//    {0x60B1, 0x00, 32},// 速度漂移
//    {0x60B2, 0x00, 16},//扭矩漂移
    //    {0x609A, 0x00, 32}, //LS err: not PDO

    // read
    {0x6041, 0x00, 16},//状态字
    {0x6064, 0x00, 32},//实际位置(编码器值)
    {0x606C, 0x00, 32}, //实际速度
    {0x6077, 0x00, 16}, //实际扭矩
    //   {0x60FD, 0x00, 32},//数字输入
    {0x60F4, 0x00, 32}, // 实际跟随误差
    {0x603F, 0x00, 16},//错误码
};

ec_pdo_info_t taikeMotorPT_pdos[] = {
    {0x1600, 5, taikeMotorPT_entries + 0},
    {0x1a00, 6, taikeMotorPT_entries + 5}
};

ec_sync_info_t taikeMotorPT_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DEFAULT},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DEFAULT},
    {2, EC_DIR_OUTPUT, 1, taikeMotorPT_pdos + 0, EC_WD_DEFAULT},
    {3, EC_DIR_INPUT, 1, taikeMotorPT_pdos + 1, EC_WD_DEFAULT},
    {0xff}
};



/**
 * ===========泰科CSP=============================//新驱动不支持，旧驱动支持
 */

ec_pdo_entry_info_t taikeMotor_entries[] = {
    //write
    {0x6040, 0x00, 16}, //控制字( 这个必须写在开头 )
    {0x607A, 0x00, 32}, //目标位置
//    {0x6060, 0x00, 8}, //控制模式

//    {0x0000, 0x00, 8}, // 假字节 (三洋写了假字节后报错)

    //    {0x60FF, 0x00, 32}, //目标速度
    //    {0x6071, 0x00, 16}, //目标力距
    //    {0x6098, 0x00, 8}, //回零模式
    //    {0x6099, 0x01, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
    //    {0x6099, 0x02, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
    {0x60B1, 0x00, 32},// 速度漂移
    {0x60B2, 0x00, 16},//扭矩漂移
    //    {0x609A, 0x00, 32}, //LS err: not PDO

    // read
    {0x6041, 0x00, 16},//状态字
    {0x6064, 0x00, 32},//实际位置(编码器值)
//    {0x606C, 0x00, 32}, //实际速度
//    {0x6077, 0x00, 16}, //实际扭矩
    //   {0x60FD, 0x00, 32},//数字输入
    {0x60F4, 0x00, 32}, // 实际跟随误差
//    {0x603F, 0x00, 16},//错误码
        {0x606C, 0x00, 32}, //实际速度
        {0x6077, 0x00, 16}, //实际扭矩
};
ec_pdo_info_t taikeMotor_pdos[] = {
    {0x1700, 4, taikeMotor_entries + 0},
    {0x1B00, 5, taikeMotor_entries + 4}
};

ec_sync_info_t taikeMotor_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, taikeMotor_pdos + 0, EC_WD_ENABLE},
    {3, EC_DIR_INPUT, 1, taikeMotor_pdos + 1, EC_WD_DISABLE},
    {0xff}
};



/**
 * ===========inovance 汇川=============================
 */

ec_pdo_entry_info_t inovance_entries[] = {
    //write
    {0x6040, 0x00, 16}, //控制字( 这个必须写在开头 )
    {0x607A, 0x00, 32}, //目标位置
    {0x6060, 0x00, 8}, //控制模式

//    {0x0000, 0x00, 8}, // 假字节 (三洋写了假字节后报错)

    //    {0x60FF, 0x00, 32}, //目标速度
    //    {0x6071, 0x00, 16}, //目标力距
    //    {0x6098, 0x00, 8}, //回零模式
    //    {0x6099, 0x01, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
    //    {0x6099, 0x02, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
    {0x60B1, 0x00, 32},// 速度漂移
    {0x60B2, 0x00, 16},//扭矩漂移
    //    {0x609A, 0x00, 32}, //LS err: not PDO

    // read
    {0x6041, 0x00, 16},//状态字
    {0x6064, 0x00, 32},//实际位置(编码器值)
    {0x606C, 0x00, 32}, //实际速度
    {0x6077, 0x00, 16}, //实际扭矩
    //   {0x60FD, 0x00, 32},//数字输入
    {0x60F4, 0x00, 32}, // 实际跟随误差
    {0x603F, 0x00, 16},//错误码
};
ec_pdo_info_t inovance_pdos[] = {
    {0x1600, 5, inovance_entries + 0},
    {0x1a00, 6, inovance_entries + 5}
};

ec_sync_info_t inovance_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, inovance_pdos + 0, EC_WD_ENABLE},
    {3, EC_DIR_INPUT, 1, inovance_pdos + 1, EC_WD_DISABLE},
    {0xff}
};


/**
 * ===========QingNengDeChuang 清能德创=============================
 */

ec_pdo_entry_info_t qingNengDeChuang_entries[] = {
    //write
    {0x6040, 0x00, 16}, //控制字( 这个必须写在开头 )
    {0x607A, 0x00, 32}, //目标位置
    {0x6060, 0x00, 8}, //控制模式
    {0x5ffe, 0x00, 8}, // 假字节 (三洋写了假字节后报错)coredump

//        {0x60FF, 0x00, 32}, //目标速度
     {0x60B1, 0x00, 32},// 速度漂移 //911MotorTest
        {0x6071, 0x00, 16}, //目标力距
    //    {0x6098, 0x00, 8}, //回零模式
    //    {0x6099, 0x01, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
    //    {0x6099, 0x02, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
//    {0x60B1, 0x00, 32},// 速度漂移
//    {0x60B2, 0x00, 16},//扭矩漂移
    //    {0x609A, 0x00, 32}, //LS err: not PDO

    // read
    {0x6041, 0x00, 16},//状态字
    {0x6064, 0x00, 32},//实际位置(编码器值)
    {0x606C, 0x00, 32}, //实际速度
    {0x6077, 0x00, 16}, //实际扭矩
    //   {0x60FD, 0x00, 32},//数字输入
    {0x60F4, 0x00, 32}, // 实际跟随误差
    {0x603F, 0x00, 16},//错误码
};
ec_pdo_info_t qingNengDeChuang_pdos[] = {
    {0x1600, 6, qingNengDeChuang_entries + 0},
    {0x1a00, 6, qingNengDeChuang_entries + 6}
};

ec_sync_info_t qingNengDeChuang_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, qingNengDeChuang_pdos + 0, EC_WD_ENABLE},
    {3, EC_DIR_INPUT, 1, qingNengDeChuang_pdos + 1, EC_WD_DISABLE},
    {0xff}
};


/**
 * ===========佛山伊莱斯ＥＬＥＳＹ=============================
 */

ec_pdo_entry_info_t elesyMotor_entries[] = {
    //write
    {0x6040, 0x00, 16}, //控制字( 这个必须写在开头 )
    {0x607A, 0x00, 32}, //目标位置
    {0x6060, 0x00, 8}, //控制模式
//    {0x5ffe, 0x00, 8}, // 假字节 (三洋写了假字节后报错)coredump

//        {0x60FF, 0x00, 32}, //目标速度
//     {0x60B1, 0x00, 32},// 速度漂移 //911MotorTest
//        {0x6071, 0x00, 16}, //目标力距
    //    {0x6098, 0x00, 8}, //回零模式
    //    {0x6099, 0x01, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
    //    {0x6099, 0x02, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
//    {0x60B1, 0x00, 32},// 速度漂移
//    {0x60B2, 0x00, 16},//扭矩漂移
    //    {0x609A, 0x00, 32}, //LS err: not PDO

    // read
    {0x6041, 0x00, 16},//状态字
    {0x6064, 0x00, 32},//实际位置(编码器值)
    {0x606C, 0x00, 32}, //实际速度
    {0x6077, 0x00, 16}, //实际扭矩
    //   {0x60FD, 0x00, 32},//数字输入
    {0x60F4, 0x00, 32}, // 实际跟随误差
    {0x603F, 0x00, 16},//错误码
};
ec_pdo_info_t elesyMotor_pdos[] = {
    {0x1600, 3, elesyMotor_entries + 0},
    {0x1a00, 6, elesyMotor_entries + 3}
};

ec_sync_info_t elesyMotor_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, elesyMotor_pdos + 0, EC_WD_ENABLE},
    {3, EC_DIR_INPUT, 1, elesyMotor_pdos + 1, EC_WD_DISABLE},
    {0xff}
};


/**
 * =========== STEP 新时达（BURKMORE_STEP_MOTOR ）=============================
 */

ec_pdo_entry_info_t step_entries[] = {
    //write
    {0x6040, 0x00, 16}, //控制字( 这个必须写在开头 )
    {0x607A, 0x00, 32}, //目标位置
    {0x6060, 0x00, 8}, //控制模式

//    {0x0000, 0x00, 8}, // 假字节 (三洋写了假字节后报错)

    //    {0x60FF, 0x00, 32}, //目标速度
    //    {0x6071, 0x00, 16}, //目标力距
    //    {0x6098, 0x00, 8}, //回零模式
    //    {0x6099, 0x01, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
    //    {0x6099, 0x02, 32},//回零速度 01寻找回零开关速度, 02寻找Z相速度
    {0x60B1, 0x00, 32},// 速度漂移
    {0x60B2, 0x00, 16},//扭矩漂移
    //    {0x609A, 0x00, 32}, //LS err: not PDO

    // read
    {0x6041, 0x00, 16},//状态字
    {0x6064, 0x00, 32},//实际位置(编码器值)
    {0x606C, 0x00, 32}, //实际速度
    {0x6077, 0x00, 16}, //实际扭矩
    //   {0x60FD, 0x00, 32},//数字输入
    {0x60F4, 0x00, 32}, // 实际跟随误差
    {0x603F, 0x00, 16},//错误码
};
ec_pdo_info_t step_pdos[] = {
    {0x1601, 5, step_entries + 0},
    {0x1a01, 6, step_entries + 5}
};

ec_sync_info_t step_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, step_pdos + 0, EC_WD_ENABLE},
    {3, EC_DIR_INPUT, 1, step_pdos + 1, EC_WD_DISABLE},
    {0xff}
};

/**
 * =========== STEP 新时达（BURKMORE_STEP_MOTOR 4通道 ）=============================
 */
ec_pdo_entry_info_t step4channel_pdo_entries[] = {
    {0x6040, 0x00, 16}, /* Control Word */
    {0x6060, 0x00, 8}, /* Modes of Operation */
    {0x6098, 0x00, 8}, /* Homing method */
    {0x607a, 0x00, 32}, /* Target Position */
    {0x6840, 0x00, 16}, /* Control Word */
    {0x6860, 0x00, 8}, /* Modes of Operation */
    {0x6898, 0x00, 8}, /* Homing method */
    {0x687a, 0x00, 32}, /* Target Position */
    {0x7040, 0x00, 16}, /* Control Word */
    {0x7060, 0x00, 8}, /* Modes of Operation */
    {0x7098, 0x00, 8}, /* Homing method */
    {0x707a, 0x00, 32}, /* Target Position */
    {0x7840, 0x00, 16}, /* Control Word */
    {0x7860, 0x00, 8}, /* Modes of Operation */
    {0x7898, 0x00, 8}, /* Homing method */
    {0x787a, 0x00, 32}, /* Target Position */
    {0x6041, 0x00, 16}, /* Status Word */
    {0x603f, 0x00, 16}, /* Error Code */
    {0x6061, 0x00, 8}, /* Modes of Operation Display */
    {0x6064, 0x00, 32}, /* Position Actual Value */
    {0x606c, 0x00, 32}, /* Velocity Actual Value */
    {0x6841, 0x00, 16}, /* Status Word */
    {0x683f, 0x00, 16}, /* Error Code */
    {0x6861, 0x00, 8}, /* Modes of Operation Display */
    {0x6864, 0x00, 32}, /* Position Actual Value */
    {0x686c, 0x00, 32}, /* Velocity Actual Value */
    {0x7041, 0x00, 16}, /* Status Word */
    {0x703f, 0x00, 16}, /* Error Code */
    {0x7061, 0x00, 8}, /* Modes of Operation Display */
    {0x7064, 0x00, 32}, /* Position Actual Value */
    {0x706c, 0x00, 32}, /* Velocity Actual Value */
    {0x7841, 0x00, 16}, /* Status Word */
    {0x783f, 0x00, 16}, /* Error Code */
    {0x7861, 0x00, 8}, /* Modes of Operation Display */
    {0x7864, 0x00, 32}, /* Position Actual Value */
    {0x786c, 0x00, 32}, /* Velocity Actual Value */
};

ec_pdo_info_t step4channel_pdos[] = {
    {0x1600, 4, step4channel_pdo_entries + 0}, /* RxPDO0 */
    {0x1601, 4, step4channel_pdo_entries + 4}, /* RxPDO1 */
    {0x1602, 4, step4channel_pdo_entries + 8}, /* RxPDO2 */
    {0x1603, 4, step4channel_pdo_entries + 12}, /* RxPDO3 */
    {0x1a00, 5, step4channel_pdo_entries + 16}, /* TxPDO0 */
    {0x1a01, 5, step4channel_pdo_entries + 21}, /* TxPDO1 */
    {0x1a02, 5, step4channel_pdo_entries + 26}, /* TxPDO2 */
    {0x1a03, 5, step4channel_pdo_entries + 31}, /* TxPDO3 */
};

ec_sync_info_t step4channel_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 4, step4channel_pdos + 0, EC_WD_ENABLE},
    {3, EC_DIR_INPUT, 4, step4channel_pdos + 4, EC_WD_DISABLE},
    {0xff}
};


/**
 * =========== 同川 tcr=============================
 */
ec_pdo_entry_info_t tcr_entries[] = {
    //write
    {0x6040, 0x00, 16}, //控制字
    {0x607A, 0x00, 32}, //目标位置
    //{0x60FF, 0x00, 32}, //目标速度
    {0x6060, 0x00, 8},  //控制模式
    {0x60B1, 0x00, 32}, //速度漂移
    {0x60B2, 0x00, 16}, //扭矩漂移

    // read
    {0x6041, 0x00, 16}, //状态字
    {0x6064, 0x00, 32}, //实际位置(编码器值)
    {0x606C, 0x00, 32}, //实际速度
    {0x6077, 0x00, 16}, //实际扭矩
    {0x603F, 0x00, 16}, //错误码
    {0x60F4, 0x00, 32}, //实际跟随误差
};

ec_pdo_info_t tcr_pdos[] = {
    {0x1600, 5, tcr_entries + 0},
    {0x1a00, 6, tcr_entries + 5}
};

ec_sync_info_t tcr_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, tcr_pdos + 0, EC_WD_DISABLE},
    {3, EC_DIR_INPUT, 1, tcr_pdos + 1, EC_WD_DISABLE},
    {0xff}
};

/**
 * =========== 松下 =============================
 */
ec_pdo_entry_info_t sx_entries[] = {
    //write
    {0x6040, 0x00, 16}, //控制字( 这个必须写在开头 )
    {0x607A, 0x00, 32}, //目标位置
    {0x6060, 0x00, 8},  //控制模式
    {0x60B1, 0x00, 32}, //速度漂移
    {0x60B2, 0x00, 16}, //扭矩漂移

    // read
    {0x6041, 0x00, 16}, //状态字
    {0x6064, 0x00, 32}, //实际位置(编码器值)
    {0x606C, 0x00, 32}, //实际速度
    {0x6077, 0x00, 16}, //实际扭矩
    {0x603F, 0x00, 16}, //错误码
    {0x60F4, 0x00, 32}, //实际跟随误差
};

ec_pdo_info_t sx_pdos[] = {
    {0x1600, 5, sx_entries + 0},
    {0x1a00, 6, sx_entries + 5}
};

ec_sync_info_t sx_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, sx_pdos + 0, EC_WD_DISABLE},
    {3, EC_DIR_INPUT, 1, sx_pdos + 1, EC_WD_DISABLE},
    {0xff}
};

// /**
// * =========== LS =============================
// *  ethercat cstruct -p 0 -v

///  Master 0, Slave 0, "L7N"
//  Vendor ID:       0x00007595
//// * Product code:    0x00000000
//// * Revision number: 0x00000002
//

//ec_pdo_entry_info_t slave_0_pdo_entries[] = {
//    {0x6040, 0x00, 16}, /* Controlword */
//    {0x607a, 0x00, 32}, /* Target Position */
//    {0x6041, 0x00, 16}, /* Statusword */
//    {0x6064, 0x00, 32}, /* Position Actual Value */
//};

//ec_pdo_info_t slave_0_pdos[] = {
//    {0x1601, 2, slave_0_pdo_entries + 0}, /* 2nd Receive PDO Mapping */
//    {0x1a01, 2, slave_0_pdo_entries + 2}, /* 2nd Transmit PDO Mapping */
//};

//ec_sync_info_t slave_0_syncs[] = {
//    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
//    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
//    {2, EC_DIR_OUTPUT, 1, slave_0_pdos + 0, EC_WD_DISABLE},
//    {3, EC_DIR_INPUT, 1, slave_0_pdos + 1, EC_WD_DISABLE},
//    {0xff}
//};

ec_pdo_entry_info_t ls_entries[] = {
    //write
    {0x6040, 0x00, 16}, //控制字( 这个必须写在开头 )
    {0x607A, 0x00, 32}, //目标位置
    {0x6060, 0x00, 8},  //控制模式

    // read
    {0x6041, 0x00, 16}, //状态字
    {0x6064, 0x00, 32}, //实际位置(编码器值)
    {0x606C, 0x00, 32}, //实际速度
    {0x6077, 0x00, 16}, //实际扭矩
    {0x603F, 0x00, 16}, //错误码
};

ec_pdo_info_t ls_pdos[] = {
    {0x1600, 3, ls_entries + 0},
    {0x1a00, 5, ls_entries + 3}
};

ec_sync_info_t ls_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, ls_pdos + 0, EC_WD_DISABLE},
    {3, EC_DIR_INPUT, 1, ls_pdos + 1, EC_WD_DISABLE},
    {0xff}
};

//ec_pdo_entry_info_t ls_entries[] = {
//    //write
//    {0x6040, 0x00, 16}, //控制字( 这个必须写在开头 )
//    {0x607A, 0x00, 32}, //目标位置
//    {0x6060, 0x00, 8}, //控制模式

//    // read
//    {0x6041, 0x00, 16},//状态字
//    {0x6064, 0x00, 32},//实际位置(编码器值)
//    {0x6061, 0x00, 8}, //控制模式显示
//    {0x606C, 0x00, 32}, //实际速度
//    {0x6077, 0x00, 16}, //实际扭矩
//    //   {0x60FD, 0x00, 32},//数字输入
//    {0x60F4, 0x00, 32}, // 实际跟随误差
//    {0x603F, 0x00, 16},//错误码
//};

//ec_pdo_info_t ls_pdos[] = {
//    {0x1600, 3, ls_entries + 0},
//    {0x1a00, 7, ls_entries + 3}
//};

//ec_sync_info_t ls_syncs[] = {
//    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
//    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
//    {2, EC_DIR_OUTPUT, 1, ls_pdos + 0, EC_WD_DISABLE},
//    {3, EC_DIR_INPUT, 1, ls_pdos + 1, EC_WD_DISABLE},
//    {0xff}
//};
/**
 * =========== 台达 =============================
 */
ec_pdo_entry_info_t delta_entries[] = {
    //write
    {0x6040, 0x00, 16}, //控制字( 这个必须写在开头 )
    {0x607A, 0x00, 32}, //目标位置
    {0x6060, 0x00, 8},  //控制模式

    // read
    {0x6041, 0x00, 16}, //状态字
    {0x6064, 0x00, 32}, //实际位置(编码器值)
    {0x606C, 0x00, 32}, //实际速度
    {0x6077, 0x00, 16}, //实际扭矩
    {0x603F, 0x00, 16}, //错误码
};

ec_pdo_info_t delta_pdos[] = {
    {0x1600, 3, delta_entries + 0},
    {0x1a00, 7, delta_entries + 3}
};

ec_sync_info_t delta_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, delta_pdos + 0, EC_WD_DISABLE},
    {3, EC_DIR_INPUT, 1, delta_pdos + 1, EC_WD_DISABLE},
    {0xff}
};

/**
 * =========== Invt =============================
 */
ec_pdo_entry_info_t invt_entries[] = {
    //write
    {0x6040, 0x00, 16}, //控制字( 这个必须写在开头 )
    {0x607A, 0x00, 32}, //目标位置
    {0x6060, 0x00, 8},  //控制模式

    // read
    {0x6041, 0x00, 16}, //状态字
    {0x6064, 0x00, 32}, //实际位置(编码器值)
    {0x606C, 0x00, 32}, //实际速度
    {0x6077, 0x00, 16}, //实际扭矩
    {0x603F, 0x00, 16}, //错误码
};

ec_pdo_info_t invt_pdos[] = {
    {0x1600, 3, invt_entries + 0},
    {0x1a00, 7, invt_entries + 3}
};

ec_sync_info_t invt_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, invt_pdos + 0, EC_WD_DISABLE},
    {3, EC_DIR_INPUT, 1, invt_pdos + 1, EC_WD_DISABLE},
    {0xff}
};

/**
 * =========== 三洋 =============================
 */
ec_pdo_entry_info_t sanyo_entries[] = {
    //write
    {0x6040, 0x00, 16}, //控制字( 这个必须写在开头 )
    {0x607A, 0x00, 32}, //目标位置
    {0x60B1, 0x00, 32}, //速度漂移
    {0x60B2, 0x00, 16}, //扭矩漂移
    // read
    {0x6041, 0x00, 16}, //状态字
    {0x6064, 0x00, 32}, //实际位置(编码器值) (同川伺服，0x1a01只能映射0x6041和0x6064两个)
    {0x606C, 0x00, 32}, //实际速度
    {0x6077, 0x00, 16}, //实际扭矩
    {0x2102, 0x01, 32}, //错误码( 读后8bit )
};

ec_pdo_info_t sanyo_pdos[] = {
    {0x1700, 4, sanyo_entries + 0},
    {0x1b00, 5, sanyo_entries + 4}
};

ec_sync_info_t sanyo_syncs[] = {
    {0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
    {1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
    {2, EC_DIR_OUTPUT, 1, sanyo_pdos + 0, EC_WD_DISABLE},
    {3, EC_DIR_INPUT, 1, sanyo_pdos + 1, EC_WD_DISABLE},
    {0xff}
};

/// 经测试 //io必须使用EC_WD_ENABLE才能写 DO
/// 对于8bit数据 三洋电机必须用   {0x0000, 0x00, 8}, // 假字节 补为16bit
/// 清能德创  用  {0x5FFE, 0x00, 8}, // 假字节 补全


#pragma pack()//默认的对齐

#endif // PDOMAPSTRUCT_H
